﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using GerTestes.Entity;
using GerTestes.Utilitarios;

namespace GerTestes.Cadastros
{
    public partial class CadastroProjeto : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarGridProjetos();
                carregarGerentes();
                carregarAnalistas();
                carregarLiderTeste();
                TxtPesquisaGrid.Attributes.Add("onkeypress", "return clickButton(event,'" + TxtPesquisaGrid.ClientID + "')");
            }
        }

        private void carregarAnalistas()
        {
            ddlAnalista.Items.Clear();
            ddlAnalista.DataValueField = "ID_USUARIO";
            ddlAnalista.DataTextField = "NOME";
            ddlAnalista.DataSource = carregarUsuarios("ANALISTA");
            ddlAnalista.DataBind();
            ddlAnalista.Items.Insert(0, "Selecione");
        }

        private void carregarLiderTeste()
        {
            ddlLiderTeste.Items.Clear();
            ddlLiderTeste.DataValueField = "ID_USUARIO";
            ddlLiderTeste.DataTextField = "NOME";
            ddlLiderTeste.DataSource = carregarUsuarios("LÍDER");
            ddlLiderTeste.DataBind();
            ddlLiderTeste.Items.Insert(0, "Selecione");
        }

        private void carregarGerentes()
        {
            ddlGerente.Items.Clear();
            ddlGerente.DataValueField = "ID_USUARIO";
            ddlGerente.DataTextField = "NOME";
            ddlGerente.DataSource = carregarUsuarios("GERENTE");
            ddlGerente.DataBind();
            ddlGerente.Items.Insert(0, "Selecione");
        }

        private DataTable carregarUsuarios(string pFuncao)
        {
            DataTable dtDados = ControlClass.CNUsuarios.getUsuarios("");
            DataView dadosFiltrado = dtDados.DefaultView;
            if (pFuncao == "GERENTE")
            {
                dadosFiltrado.RowFilter = "FUNCAO = 'Gerente de Projeto' ";
            }
            else if (pFuncao == "ANALISTA")
            {
                dadosFiltrado.RowFilter = "FUNCAO = 'Analista de Teste' ";
            }
            else if (pFuncao == "LÍDER")
            {
                dadosFiltrado.RowFilter = "FUNCAO = 'Líder de Teste' ";
            }
            return dadosFiltrado.ToTable();
        }

        private void carregarGridProjetos()
        {
            gvwProjetos.DataSource = ControlClass.CNProjetos.getProjetos(TxtPesquisaGrid.Text);
            gvwProjetos.DataBind();
        }

        protected void gvwProjetos_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwProjetos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[7].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[7].Text.Trim()) == "S")
                    controle.ImageUrl = "~/assets/img/ativo.png";
                else
                    controle.ImageUrl = "~/assets/img/inativo.png";
                e.Row.Cells[7].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[7].Visible = false;
            }
            #endregion
        }

        protected void TxtPesquisa_TextChanged(object sender, EventArgs e)
        {
            carregarGridProjetos();
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            lblDescricaoPnlEdicao.Text = "Inclusão Projeto";
            pnlConsulta.Enabled = false;
            pnlEdicao.Visible = true;
            ThiagoSoftware.Upgrade.UtilForms.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";
            carregarGerentes();
            carregarAnalistas();
            carregarLiderTeste();
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlConsulta.Enabled = true;
            ThiagoSoftware.Upgrade.UtilForms.LimparCampos(pnlEdicao);
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Projeto projeto = new Projeto();
                projeto.Descricao = TxtDescricao.Text.ToUpper();
                projeto.CodGerente = Convert.ToInt32(ddlGerente.SelectedValue);
                projeto.CodAnalista = Convert.ToInt32(ddlAnalista.SelectedValue);
                projeto.CodLider = Convert.ToInt32(ddlLiderTeste.SelectedValue);
                if (CheckAtivo.Checked)
                    projeto.Ativo = "S";
                else projeto.Ativo = "N";
                if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNProjetos.incluirProjeto(projeto))
                    {
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                        carregarGridProjetos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoInserir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    projeto.Codigo = Convert.ToInt32(ViewState["ID_PROJETO"]);
                    if (ControlClass.CNProjetos.alterarProjeto(projeto))
                    {
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                        carregarGridProjetos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoAlterar, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }

        protected void gvwProjetos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Projeto projeto = new Projeto();
                int index = int.Parse((String)e.CommandArgument);
                projeto.Codigo = Convert.ToInt32(gvwProjetos.DataKeys[index]["ID_PROJETO"].ToString());
                projeto = ControlClass.CNProjetos.getDadosProjeto(projeto.Codigo);
                if (e.CommandName == "Alterar")
                {
                    TxtDescricao.Text = projeto.Descricao.ToUpper();
                    ddlAnalista.SelectedValue = projeto.CodAnalista.ToString();
                    ddlGerente.SelectedValue = projeto.CodGerente.ToString();
                    ddlLiderTeste.SelectedValue = projeto.CodLider.ToString();
                    ViewState["ID_PROJETO"] = projeto.Codigo;
                    CheckAtivo.Checked = projeto.Ativo == "S";
                    lblDescricaoPnlEdicao.Text = "Alteração Projeto";
                    pnlConsulta.Enabled = false;
                    pnlEdicao.Visible = true;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNProjetos.excluirProjeto(projeto.Codigo))
                    {
                        carregarGridProjetos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoExcluir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }
    }
}